package flst.ipiweb.struts.action.accueil;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import flst.ipiweb.proxy.ServiceAdministrateurProxy;
import flst.ipiweb.service.ServiceCrypto;
import flst.ipiweb.transverse.Administrateur;
import flst.ipiweb.transverse.IPIException;

public class LoginPostAction extends Action{

	public ActionForward execute(
			ActionMapping mapping, 
			ActionForm form,
			HttpServletRequest request, 
			HttpServletResponse response)
			throws Exception {
			
			HttpSession session = request.getSession();
			if(session.getAttribute("login") != null)
			{
				request.setAttribute("pageTitle", "login.title");
				return mapping.findForward("login_ok");
			}
			
			LoginForm vLoginForm = (LoginForm) form;
			Administrateur admin =  new Administrateur();
			admin.setLoginUtilisateur(vLoginForm.getUsername());
			admin.setPassword(new ServiceCrypto().encrypt(vLoginForm.getPassword()));
			
			try
			{
				ServiceAdministrateurProxy sAdmin =  new ServiceAdministrateurProxy(false);
				admin = sAdmin.connectAdministrateur(admin);
				
				
				if(admin != null)
				{				
					session.setAttribute("login", admin.getLoginUtilisateur());
					session.setAttribute("isSuper",admin.getIsSuper());
					request.setAttribute("loginForm", vLoginForm);
					request.setAttribute("pageTitle", "login.title");
					request.setAttribute("isSuper", session.getAttribute("isSuper"));
					session.setAttribute("error", null);	
					return mapping.findForward("login_ok");
				}
				else
				{
					session.setAttribute("error", "Login.isNotExist");
				}
			}
			catch(IPIException e)
			{
				session.setAttribute("error", e.getMessage());		
			}
			
			request.setAttribute("error",session.getAttribute("error"));
			return mapping.findForward("login");
			
			
			
		}
	
}
